5532
5431
Tato otázka již má odpovědi zde:
Obrátit řetězec v Pythonu
(29 odpovědí)
Uzavřeno před 4 lety.
Snažím se zvrátit řetězec a pomocí níže uvedeného kódu, ale výsledná hodnota reverzního seznamu je None.
Kód:
str_a = 'Toto je míchání'
rev_word = str_a.split ()
rev_word = rev_word.reverse ()
rev_word = '' .join (rev_word)
Vrátí TypeError. Proč? 
.reverse () vrací None. Proto byste jej neměli přiřadit k proměnné.
Místo toho použijte toto:
stra = 'Toto je řetězec'
revword = stra.split ()
revword.reverse ()
revword = ''. join (revword)
Spustil jsem pro vás kód na IDEOne, abyste viděli výstup. (Všimněte si také, že výstup je stringaisThis; místo toho můžete použít '' .join (revword), s mezerou.)
Všimněte si také, že metoda, kterou jste zadali, obrátí pouze slova, nikoli text. @ ron.rothman poskytl odkaz, který podrobně popisuje, jak obrátit řetězec jako celek.
|
Toto je můj osobní oblíbený způsob obrácení řetězce:
stra = "Toto je řetězec"
revword = stra [:: - 1]
print (revword) # "gnirts a si sihT
nebo pokud chcete změnit pořadí slov:
revword = "" .join (stra.split () [:: - 1])
print (revword) # "string a is This"
:)
|
Různé obrácení na provázku:
instring = 'Toto je řetězec'
reversedstring = instring [:: - 1]
tisk obráceného řetězce # gnirts a si siHT
wordsreversed = '' .join (slovo [:: - 1] pro slovo v instring.split ())
tisk slov zvrátit # sihT si a gnirts
revwordorder = '' .join (slovo za slovem v instring.split () [:: - 1])
print revwordorder # string a is This
revwordandorder = '' .join (slovo [:: - 1] pro slovo v instring.split () [:: - 1])
vytisknout revwordandorder # gnirts a si siHT
|
Pro budoucí použití, když má objekt metodu jako [] .reverse (), obecně provádí tuto akci na objektu (tj. Seznam je tříděn a nevrací nic, None) na rozdíl od vestavěných funkcí, jako je tříděno, které provádějí akci na objekt a vrátí hodnotu (tj. seřazený seznam)
|
>>> s = 'toto je řetězec'
>>> s [:: - 1]
'gnirts a si siht'
>>> ''. připojit (obráceně)
'gnirts a si siht'
|
Smyčka for iteruje řetězec od konce (poslední písmeno) do začátku (první písmeno)
>>> s = 'Můžete to zkusit také:]'
>>> rev = ''
>>> pro i v rozsahu (délky - 1, -1, -1):
... rev + = s [i]
>>> rev
']: oot siht yrt nac uoY'
|
Na základě komentářů a dalších odpovědí:
str_a = 'toto je řetězec'
rev_word = '' .join (obrácené (str_a.split ()))
Řetězení metod v Pythonu přece funguje ...
|
Zpětný seznam lze provést více než jedním způsobem. Jak již bylo zmíněno v předchozích odpovědích, dva jsou velmi prominentní, jeden s funkcí reverse () a dva s funkcí krájení. Uvádím několik poznatků, kterému bychom měli dát přednost.
Pro obrácení seznamu Pythonu bychom měli vždy používat funkci reverse (). Dva důvody, jeden obrácení na místě a dva rychlejší než jiné.
Mám několik údajů, které podporují moji odpověď,
V [15]: len (l)
Ven [15]: 1 000
V [16]:% timeit -n1 l.reverse ()
1 smyčka, nejlepší ze 3: 7,87 µs na smyčku
V [17]:% timeit -n1 l [:: - 1]
1 smyčka, nejlepší 3: 10 µs na smyčku
U seznamu 1000 celých čísel fungovala funkce reverse () lépe ve srovnání s krájením.
|
Toto není odpověď, kterou hledáte? Projděte si další otázky se značkou python nebo se zeptejte na vlastní otázku.